import java.util.*;
//402. 移掉 K 位数字
class Solution {
    public String removeKdigits(String num, int k) {
        if(num.length()==k){
            return "0";
        }
        Stack<Character> stack=new Stack<>();
        for(int i=0;i<num.length();i++){
            char cur=num.charAt(i);
            if(stack.isEmpty()){
                stack.push(cur);
                continue;
            }
            //删除递增到递减前的一个元素(注意不能等于)
            while(k>0&&!stack.isEmpty()&&(cur-'0')<(stack.peek()-'0')){
                stack.pop();
                k--;
            }
            stack.push(cur);
        }
        //如果还有次数没用完说明栈尾那一部分的元素的递增的，直接出栈即可
        while (k > 0) {
            stack.pop();
            k--;
        }
        //构建最终结果
        StringBuilder res=new StringBuilder();
        while(!stack.isEmpty()){
            res.append(stack.pop());
        }
        for(int i=res.length()-1;i>=0;i--){
            if(res.charAt(i)-'0'==0){
                res.deleteCharAt(i);
            }
            else{
                break;
            }
        }
        return res.length()==0?"0":res.reverse().toString();

    }
}